package com.atguigu.cotroller;

import com.atguigu.pojo.User;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("user")
public class UserController {
    @GetMapping("data1")
    public String data1(String user) {
        String name = null;

        //name.toString(); //空指针异常 NullPointerException
        return "ok";
    }
    @GetMapping("data2")
    public String data2(String user) {
        //int i = 1/0 ;//除数为零 ArithmeticException
        return "ok";
    }

    /**
     * @Validated 代表应用校验注解! 必须添加!
     *     步骤一：实体类属性添加校验注解
     *     步骤二：控制器方法添加@Validated注解
     *
     *
     *     如果不符合校验，直接向前端返回错误信息
     *     接受错误绑定信息 自定义返回结果 约定：参数错误 -> 400 ->前端
     *     捕捉错误保定错误信息
     *         1.handeler(校验对象，BindingResult result) 要求绑定校验对象和绑定校验结果对象 紧挨着
     *         2.BindingResult获取绑定错误
     */
    @GetMapping("data3")
    public Object data3(@Validated User user, BindingResult result) {

        if (result.hasErrors()){
            Map map = new HashMap<>();
            map.put("code", 400);
            map.put("msg", "参数错误");
            return map;
        }
        System.out.println("user = " + user);
        return "ok";
    }
}
